package com.otherTest.designpattern.creationalpattern.abstractfactory;


import com.otherTest.designpattern.creationalpattern.abstractfactory.phonecolor.PhoneColor;

/**
 * @Description: 围绕一个超级工厂创建其他工厂，该超级工厂又称为其他工厂的工厂
 * 接口只是创建工厂对象，不需要显式的指定他们的类，每个生成的工厂都能按照工厂模式提供对象
 * <p>
 * 关键代码：在一个工厂里聚合多个同类产品。
 * 使用场景： 1、QQ 换皮肤，一整套一起换。 2、生成不同操作系统的程序。
 * @author: conceit
 * @Date: 2018/8/31 10:50
 */
public class AbstractFactoryMainTest {

    public static void main(String[] args) {

        //获取手机型号工厂
        PhoneAbstractFactory phoneColorFactory = PhoneFactoryProducer.selectFactory("color");

        PhoneColor phoneColorRed = phoneColorFactory.selectPhoneColor("red");
        PhoneColor phoneColorBlack = phoneColorFactory.selectPhoneColor("black");

        phoneColorRed.selectPhoneColor();
        phoneColorBlack.selectPhoneColor();

        //手机颜色工厂
        PhoneAbstractFactory phoneVersionFactory = PhoneFactoryProducer.selectFactory("version");
        phoneVersionFactory.selectPhoneVersion("e3").selectPhoneVersion();
        phoneVersionFactory.selectPhoneVersion("pro7").selectPhoneVersion();

    }

}
